package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
 * java.util.List集合
 * List是一个接口，定义了List集合的相关操作，它除了具有Collection中的通用操作外还提供了一组通过，
 * 下标操作元素的方法.
 * LIst是可以存放重复元素且有序的集合，常用实现类:
 * java.util.ArrayList:内部使用数组实现，查询性能好.
 * java.util.LinkedList:内部使用链表实现. 增删性能更好，首尾增删性能最佳.
 *
 */
public class ListDemo1 {
    public static void main(String[] args) {
        /** java.util.List集合 */
        /** java.util.ArrayList:内部使用数组实现，查询性能好.*/
//        List<String> list = new LinkedList();
        List<String> list = new ArrayList<>();
        list.add("你");
        list.add("是");
        list.add("不");
        list.add("是");
        list.add("我");
        list.add("最");
        list.add("爱");
        list.add("的");
        list.add("人");
        list.add("!");
        System.out.println(list);
        /** E get(int index):获取指定下标处对应的元素*/
        String str = list.get(4);
        System.out.println(str);
        for(int i=0;i<list.size();i++){
            str = list.get(i);
            System.out.println(str);
        }

//        for(str : list){
//            System.out.println();
//        }

        /** E set(int index, E e):(替换元素操作)*/
        //将给定的元素设置到指定的位置，返回值为该位置原有元素.
        String ing = list.set(8,"呵呵");
        System.out.println(list);
        System.out.println(ing);
        //反向读取
//        for(int i=list.size()-1;i>=0;i--){
//            String rng = list.get(i);
//            System.out.println(rng);
//        }
//        System.out.println(list);
        System.out.println("下一位------------------------------------------------------");
        //将集合元素反转
        Collections.reverse(list);
//        for(int i=list.size()-1;i>=0;i--){
//            String rng = list.get(i);
//            System.out.println(rng);
//
//            list.add(rng);
//            list.remove(i);
//        }
//        System.out.println(list);

        for(int i=0;i<list.size()/2;i++){
            str = list.get(i);
            String  str1 = list.set(list.size()-1-i,str);
            list.set(i,str1);
        }
        System.out.println(list);



    }
}
